/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.solrtools.solrquerydao;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.ModifiableSolrParams;

/**
 *
 * @author eleazer
 */
public class SolrQueryDaoImpl implements SolrQueryDao {

    
    private static final Logger LOGGER = Logger.getLogger(SolrQueryDaoImpl.class.getName());

	@Override
	public QueryResponse search(String field, String text) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public SolrDocumentList findAllDocuments() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}
    
    
/*    public SolrServer IndexerAndSearcher() {
              
            SolrServer solrServer = null;
	
            try {
                    solrServer = new CommonsHttpSolrServer("http://localhost:8983/solr");
		} catch (MalformedURLException e) {
                    LOGGER.log(Level.INFO, "Metodo IndexerAndSearcher da classe SolrQueryDaoImpl: {0}", e);
		}
                return solrServer;
	}
        

	*//**
	 * Construtor padrão.
	 * @throws Exception - Qualquer exceção (erro) de integração que possa ocorrer na chamado do método.
	 *//*
	public SolrQueryDaoImpl() throws Exception {
		super();
	}

     *//**
     * Implementação do método responsável pelo acesso aos dados na listagem de solr.
     * @return List<SolrQuery> - O método retorna uma lista de SolrQuery com informações da base.
     * @throws Exception Qualquer exceção (erro) de integração que possa ocorrer na chamada do método.  
     *//*
     @Override
     public QueryResponse search(String field, String text) throws Exception {
	    // http://localhost:8983/solr/select/q=*:*&sort=id+asc&version=2.2
	    ModifiableSolrParams params = new ModifiableSolrParams();
	    params.set("q", field + ":" + text);
            QueryResponse queryResponse = new QueryResponse();
		try {
                        SolrServer solrServer = IndexerAndSearcher();
			queryResponse = solrServer.query(params);
			
			SolrDocumentList documents = queryResponse.getResults();
			System.out.println("\n--\n");
			for(SolrDocument document : documents) {
				System.out.println("Document[" + document.getFieldValue("id") + "]");
				System.out.println("\tDocument Fields[" + document.getFieldNames() + "]");
				System.out.println("\tNome: " + document.getFieldValue("nome"));
				System.out.println("\tDescrição: " + document.getFieldValue("descricao"));
			}
		} catch (SolrServerException e) {
                    LOGGER.log(Level.INFO, "Metodo search da classe SolrQueryDaoImpl: {0}", e);
		}
	    return queryResponse;
	}

    *//**
     * Implementação do método responsável pelo acesso aos dados no solr na listagem.
     * @return SolrDocumentList- O método retorna uma lista de SolrQuery com informações da base.
     * @throws Exception Qualquer exceção (erro) de integração que possa ocorrer na chamada do método.  
     *//*
     @Override
     public SolrDocumentList findAllDocuments() throws Exception {
	    SolrQuery query = new SolrQuery();
	    query.setQuery("*:*");
	    query.addSortField("id", SolrQuery.ORDER.asc);
            QueryResponse queryResponse = new QueryResponse();
            SolrDocumentList documents = null;
	    
            try {
                    SolrServer solrServer = IndexerAndSearcher();
                    IndexerAndSearcher();
                    queryResponse = solrServer.query(query);
                    // Recupera todos os documentos
                    documents = queryResponse.getResults();

            } catch (SolrServerException e) {
                    LOGGER.log(Level.INFO, "Metodo findAllDocuments da classe SolrQueryDaoImpl: {0}", e);
            }
         return documents;   
	}
*/}
